/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package funda.appius.Constructora;

import funda.appius.Avance.Real.Avance_Real;
import funda.appius.Catalogo.Conceptos.Catalogo_Conceptos;
import funda.appius.Presupuesto.Presupuesto;
import funda.appius.arquitectura.AbstractFunda;
import java.sql.Date;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author payo
 */
public class Proyecto extends AbstractFunda{
    
    private String Nombre, Cliente, Contrato,Descripcion;
    private Date FechaInicio,FechaEntrega;
    private Catalogo_Conceptos Catalogo;
    private Presupuesto Presupuesto;
    private Avance_Real AvanceReal;
    private int IdProyecto , IdConstructora;

    public Avance_Real getAvanceReal() {
        return AvanceReal;
    }

    public void setAvanceReal(Avance_Real AvanceReal) {
        this.AvanceReal = AvanceReal;
    }

    public Catalogo_Conceptos getCatalogo() {
        return Catalogo;
    }

    public void setCatalogo(Catalogo_Conceptos Catalogo) {
        this.Catalogo = Catalogo;
    }

    public String getCliente() {
        return Cliente;
    }

    public void setCliente(String Cliente) {
        this.Cliente = Cliente;
    }

    public String getContrato() {
        return Contrato;
    }

    public void setContrato(String Contrato) {
        this.Contrato = Contrato;
    }

    public String getDescripcion() {
        return Descripcion;
    }

    public void setDescripcion(String Descripcion) {
        this.Descripcion = Descripcion;
    }

    public Date getFechaEntrega() {
        return FechaEntrega;
    }

    public void setFechaEntrega(Date FechaEntrega) {
        this.FechaEntrega = FechaEntrega;
    }

    public Date getFechaInicio() {
        return FechaInicio;
    }

    public void setFechaInicio(Date FechaInicio) {
        this.FechaInicio = FechaInicio;
    }

    public int getIdConstructora() {
        return IdConstructora;
    }

    public void setIdConstructora(int IdConstructora) {
        this.IdConstructora = IdConstructora;
    }

    public int getIdProyecto() {
        return IdProyecto;
    }

    public void setIdProyecto(int IdProyecto) {
        this.IdProyecto = IdProyecto;
    }

    public String getNombre() {
        return Nombre;
    }

    public void setNombre(String Nombre) {
        this.Nombre = Nombre;
    }

    public Presupuesto getPresupuesto() {
        return Presupuesto;
    }

    public void setPresupuesto(Presupuesto Presupuesto) {
        this.Presupuesto = Presupuesto;
    }
    
    
    
    public Proyecto()
    {
        super();
    }
    
    public Proyecto(int IdConstructora,String Nombre, String Cliente, String Contrato, String Descripcion, Date FechaInicio, Date FechaEntrega) {
        super();
        this.Nombre = Nombre;
        this.Cliente = Cliente;
        this.Contrato = Contrato;
        this.Descripcion = Descripcion;
        this.FechaInicio = FechaInicio;
        this.FechaEntrega = FechaEntrega;
        this.IdConstructora = IdConstructora;
        this.IdProyecto = Integer.parseInt(insertarId().toString());
        this.Catalogo = new Catalogo_Conceptos(this.IdProyecto);
        this.Presupuesto = new Presupuesto(this.IdProyecto);
        this.AvanceReal = new Avance_Real(this.IdProyecto);
    }
    
    @Override
    protected void fillFunda(ResultSet row) {
        try{
            int x =0;
            this.IdProyecto = row.getInt(++x);
            this.Nombre = row.getString(++x);
            this.Cliente = row.getString(++x);
            this.Contrato = row.getString(++x);
            this.Descripcion = row.getString(++x);
            this.FechaInicio = Date.valueOf(row.getString(++x));
            this.FechaEntrega = Date.valueOf(row.getString(++x));
            this.IdConstructora = row.getInt(++x);
            this.Catalogo = (Catalogo_Conceptos)AbstractFunda.getAbstractFunda(new Catalogo_Conceptos(), IdProyecto, "catalogoconceptos", id);
            this.AvanceReal = (Avance_Real)AbstractFunda.getAbstractFunda(new Avance_Real(), IdProyecto, "avancereal", id);
            this.Presupuesto = (Presupuesto)AbstractFunda.getAbstractFunda(new Presupuesto(), IdProyecto, "presupuesto", id);
        }
        catch(Exception e){}
    }

    @Override
    protected void Comandos() {
        this.id = "IdProyecto";
        this.tabla = "proyecto";
        this.strDelete = "DeleteProyecto";
        this.strInsertar = "InsertarProyecto";
        this.strInsertarId = "InsertarIdProyecto";
        this.strUpdate = "UpdateProyecto";
    }

    @Override
    public ArrayList<Object> getAtributos() {
        ArrayList<Object> lst = new ArrayList<Object>();
        lst.add(Nombre);
        lst.add(Cliente);
        lst.add(Contrato);
        lst.add(Descripcion);
        lst.add(FechaInicio);
        lst.add(FechaEntrega);
        lst.add(IdConstructora);
        lst.add(IdProyecto);
        return lst;
    }
    
    @Override
    public Proyecto get(Object id) {
        AbstractFunda abs = AbstractFunda.getAbstractFunda(new Proyecto(),id,tabla,this.id);
        Proyecto c = (Proyecto)abs;
        return c;
    }
    
    public ArrayList<Proyecto> getAll() {
        List<AbstractFunda> abs = AbstractFunda.getAll(tabla,id,this.getClass());
        ArrayList<Proyecto> lst = new ArrayList<Proyecto>();
        for(AbstractFunda af : abs)
            lst.add((Proyecto)af);
        return lst;
    }
    
}
